iT邦幫忙

2023 iThome 鐵人賽

DAY 19
1

@Autowired

@Autowired 是Spring框架中的一個註解,用於實現依賴注入 (DI,Dependency Injection),它允許將一個物件的依賴關係交給容器來管理,用於告訴Spring容器自動注入標記的屬性、函數或方法參數。

讓我們回到昨天的例子,廚房這個類別是服務層:

import org.springframework.stereotype.Service;

@Service
public class Kitchen {

    // 服務層業務邏輯程式碼
		public String cook(Restaurant restaurant){
				String dish = restaurant.getChef + "cooks" + restaurant.getFood;
				return dish;
		}
}

Controller 使用@Autowired註解來自動綁定Kitchen 物件。

package com.example.spring.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

@Controller
public class HelloController {
		
		// 依賴注入 Kitchen 服務層
		@Autowire
		private Kitchen kitchen;

    @RequestMapping("/hello") 
    public ModelAndView helloWorld() {

        ModelAndView modelAndView = new ModelAndView("helloView");

				// 建立一個 Restaurant 物件
        Restaurant restaurant = new Restaurant("John", "Fish");

				// 將 Restaurant 物件讓廚房的方法處理
				String dish = kitchen.cook(restaurant);

				// 將回傳 dish 加到模型中
				modelAndView.addAttribute("dish", dish);

				// 回傳 ModelAndView 物件
        return modelAndView; 
    }
}

在上面的示例中,@Autowired註解來自動裝配Kitchen對象。這意味著Spring容器會自動查找Kitchen Bean 並將其傳遞給構造函數。

總之,@Autowired 註解使依賴注入變得更加簡單和方便,避免了手動建立物件和管理依賴關係的麻煩,Spring容器會自動處理依賴的解析和注入。

資料來源

https://docs.spring.io/spring-framework/reference/core/beans/annotation-config/autowired.html
https://www.baeldung.com/spring-autowire


上一篇
Day 18 : @Service 服務生:請問你需要什麼服務嗎?
下一篇
Day 20 : Spring之資料庫存取技術其一,Spring JDBC
系列文
Spring、Spirng MVC 及 Spring Boot 自主學習旅途!30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言